package com.rds.document.service;

import com.rds.common.core.domain.TreeSelect;
import com.rds.common.core.domain.entity.Folder;

import java.util.List;
import java.util.Set;

/**
 *  服务层
 *
 * @author rds
 */
public interface IFolderService
{
    /**
     * 查询管理数据
     *
     * @param folder 信息
     * @return 信息集合
     */
    public List<Folder> selectFolderList(Folder folder);

    /**
     * 构建前端所需要树结构
     *
     * @param folders 部门列表
     * @return 树结构列表
     */
    public List<Folder> buildFolderTree(List<Folder> folders);

    public Folder selectRdaFolderById(Long id);

    public List<Folder> selectRdaFolderByPId(Long parentid);

    /**
     * 根据集成过来对象Id查询文件夹
     * @param objectId 集成过来对象Id
     * @return 文件夹
     */
    Folder selectRdaFolderByObjectId(String objectId);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param folders 部门列表
     * @return 下拉树结构列表
     */
    public List<TreeSelect> buildFolderTreeSelect(List<Folder> folders);

    /**
     * 查询所有下级文件夹
     *
     * @param folderId 信息
     * @return 所有信息
     */
    public Set<Long> getAllFolderId(Long folderId);

    /**
     * 查询所有下级文件夹
     *
     * @param projectId 信息
     * @return 所有信息
     */
    public Set<Long> getAllProjectId(String projectId);

    /**
     * 新增
     *
     * @param folder
     * @return 结果
     */
    public int insertFolder(Folder folder);

    /**
     * 修改
     *
     * @param folder
     * @return 结果
     */
    public int updateFolder(Folder folder);

    /**
     * 批量删除
     *
     * @param ids 需要删除的ID
     * @return 结果
     */
    public int deleteFolderByIds(Long[] ids);

    /**
     * 删除
     *
     * @param id ID
     * @return 结果
     */
    public int deleteFolderById(Long id);

    /**
     * 查询管理数据
     *
     * @param folder 信息
     * @return 信息集合
     */
    public List<Folder> selectRdaFolderList(Folder folder);
}
